#include "stdafx.h"
#include "GeneFactoryImp.h"
#include "GeneS.h"
#include "GeneE.h"

#include "Status/GEBlind.h"
#include "Status/GECharm.h"
#include "Status/GEConfuse.h"
#include "Status/GEDaze.h"
#include "Status/GEDefeated.h"
#include "Status/GEDOT.h"
#include "Status/GEDrain.h"
#include "Status/GEFear.h"
#include "Status/GEHaste.h"
#include "Status/GEHOT.h"
#include "Status/GEInvisibility.h"
#include "Status/GEModifier.h"
#include "Status/GEStance.h"
#include "Status/GEShield.h"
#include "Status/GESlow.h"
#include "Status/GESnare.h"
#include "Status/GEStateAES.h"


GeneFactoryImp::GeneFactoryImp()
{

}

GeneFactoryImp::~GeneFactoryImp()
{

}

void
GeneFactoryImp::initialize()
{
	registerGene<GEBlind>(1000);
	registerGene<GECharm>(10001);
}

IGene*
GeneFactoryImp::create(IGeneCreateData& createData )
{
	GeneClass2Creator::iterator it = m_theCreators.find(createData.getClass());
	if (it!=m_theCreators.end())
	{
		return it->second->create();
	}
	return NULL;
}